DEFINE_ABSTRACT_CLASS

Abstract classes should use the new macro DEFINE_ABSTRACT_CLASS instead of DEFINE_CLASS. DEFINE_ABSTRACT_CLASS has the same arguments as DEFINE_CLASS; the only difference is that the reader() functions it generates do not reference the class's object I/O constructors, and shallowCopy() is defined as a derivedClassResponsibility().